package com.google.code.jtasks.client.modules;

import com.google.code.jtasks.client.services.JerseyRemoteTaskService;
import com.google.code.jtasks.client.services.TaskService;
import com.google.code.jtasks.client.state.ClientState;
import com.google.code.jtasks.client.state.SynchronizedClientState;
import com.google.inject.AbstractModule;
import com.google.inject.Singleton;

/**
 * Модуль общей настройки клиента.
 */
public class ClientConfigurationModule extends AbstractModule {
    @Override
    protected void configure() {
        binder().requireExplicitBindings();

        // Привязываем интерфейс состояния к реализации-синхронизированному состоянию,
        // причём делаем его синглтоном
        bind(ClientState.class).to(SynchronizedClientState.class).in(Singleton.class);

        bind(TaskService.class).to(JerseyRemoteTaskService.class);
    }
}
